/**
 * 
 */
package br.com.skynix.tcmc.model.enumeration;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.EnumSet;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import br.com.skynix.tcmc.base.enumeration.EntidadeEnumerada;
import br.com.skynix.tcmc.util.WebUtil;

/**
 * @author mgrb
 * 
 */
public enum SexoEnum implements EntidadeEnumerada {
	M("M", "label_sexo_marculino_abreviado", "label_sexo_marculino"), //
	F("F", "label_sexo_feminino_abreviado", "label_sexo_feminino");

	private String codigo;

	private String textoCurto;

	private String textoLongo;

	private static Map<String, SexoEnum> sexos = new HashMap<String, SexoEnum>();
	static {
		for (SexoEnum s : EnumSet.allOf(SexoEnum.class)) {
			sexos.put(s.getCodigo(), s);
		}
	}

	/**
	 * 
	 */
	private SexoEnum(String codigo, String txtCurto, String txtLong) {
		this.codigo = codigo;
		this.textoCurto = WebUtil.getLabel(txtCurto);
		this.textoLongo = WebUtil.getLabel(txtLong);
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see br.com.skynix.tcmc.base.enumeration.EntidadeEnumerada#getCodigo()
	 */
	@Override
	public String getCodigo() {
		return codigo;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * br.com.skynix.tcmc.base.enumeration.EntidadeEnumerada#getTextoCurto()
	 */
	@Override
	public String getTextoCurto() {
		// TODO Auto-generated method stub
		return textoCurto;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * br.com.skynix.tcmc.base.enumeration.EntidadeEnumerada#getTextoLongo()
	 */
	@Override
	public String getTextoLongo() {
		// TODO Auto-generated method stub
		return textoLongo;
	}

	public static SexoEnum getSexo(String sigla) {
		return sexos.get(sigla);
	}

	public static Collection<SexoEnum> listAll() {
		List<SexoEnum> ss = new ArrayList<SexoEnum>(sexos.values());
		Collections.sort(ss, new Comparator<SexoEnum>() {

			@Override
			public int compare(SexoEnum o1, SexoEnum o2) {
				return o1.getCodigo().compareTo(o2.getCodigo());
			}
		});
		return ss;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see java.lang.Enum#toString()
	 */
	@Override
	public String toString() {
		return codigo;
	}

}
